package com.example.mainstream.adapter;

import android.content.Context;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;

import androidx.annotation.NonNull;

import com.bumptech.glide.Glide;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.example.shopapp.R;
import com.example.shopapp.bean.Communication;

/**
 * CommunicationAdapter类是一个适配器类，用于将Communication对象绑定到RecyclerView的Item视图上。
 * 继承自BaseQuickAdapter类，泛型参数为Communication和BaseViewHolder。
 */
public class CommunicationAdapter extends BaseQuickAdapter<Communication, BaseViewHolder> {

    private Context context;
    private ICommunicationListener listener;

    /**
     * CommunicationAdapter类的构造方法。
     * @param context 上下文对象
     * @param listener 通信监听器对象
     */
    public CommunicationAdapter(Context context, ICommunicationListener listener) {
        super(R.layout.item_communicition);
        this.context = context;
        this.listener = listener;
    }

    /**
     * 重写convert方法，用于将Communication对象的数据绑定到Item视图上。
     * @param baseViewHolder ViewHolder对象，用于获取和设置Item视图上的控件
     * @param communication Communication对象，包含要显示的数据
     */
    @Override
    protected void convert(@NonNull BaseViewHolder baseViewHolder, Communication communication) {

        // 设置标题文本
        baseViewHolder.setText(R.id.tv_title, communication.getTitle());

       // 如果通信对象的图片URL不为空
        if (!TextUtils.isEmpty(communication.getImage_url())) {
            // 设置图片控件可见
            baseViewHolder.getView(R.id.img_url).setVisibility(View.VISIBLE);
            // 使用Glide库加载图片URL到图片控件
            Glide.with(context).load(communication.getImage_url()).into((ImageView) baseViewHolder.getView(R.id.img_url));
        }

        // 设置时间文本
        baseViewHolder.setText(R.id.tv_time, communication.getTime());

        // 设置卡片视图的点击事件监听器
        baseViewHolder.getView(R.id.card_view).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 如果监听器不为空，则调用监听器的onCommunicationClick方法，并传入通信对象
                if (listener != null) {
                    listener.onCommunicationClick(communication);
                }
            }
        });
    }
}
